const Immutable=require('immutable');
const {fromJS,Map,list}=Immutable;
const obj={
    name:'coco',
    age:20,
    address:{
        city:'武汉',
        region:'东湖高新区'
    },
    hobbies:[
        {name:'JS',desc:'是一种前端编程语言'},
        {name:'王者荣耀',desc:'一种流行的手机游戏'}
    ]
};
//通过immutable的fromJS方法将原始JS对象转换为immutable对象
const imObj=fromJS(obj);
console.log(imObj);
console.log("**************************")
//对immutable对象进行修改，其本身不会发生变化，而是返回一个新对象
const newObj=imObj.set('name','米酒');
console.log(newObj)
//setIn 方法可以使之对象里面的深层次的属性返回变化后的对象，原始对象不变
const obj111=newObj.setIn(['address','region'],'青山区');
console.log("**************************");
console.log(obj111);
                        //类似obj111.hobbies[1].names
const obj222=obj111.setIn(['hobbies',1,'name'],'王者荣耀(腾讯)');
console.log("**************************");
console.log(obj222);
//update属性提供一个回调函数，参数为属性的原始值
const obj333=obj222.update('hobbies',(hobbies)=>{
    return hobbies.push(Map({
        name:'买买买',desc:'I like'
    }))
})
console.log("**************************");
console.log(obj333);
//get 获取值
console.log(obj333.get('name'))
//对象里面的数组获取和设置的时候   []里面要加下标
console.log(obj333.getIn(['hobbies',1,'name']))